#include <stdio.h>
//征服C指针（第二版）pdf 265页

void (*signal(int sig, void (*func)(int)))(int);

//跟上面的等价
typedef void (*sighandler_t)(int);
sighandler_t signal(int sig,sighandler_t func);

/**
 * int atexit(void (*func)(void)); 
 * (*func)=》func is pointer
 * 参数void (*func)(void)=》func is pointer to function(void) returning void
 * 
 * atexit is function return int 参数是func ，which is pointer to function(void) returning void
 */

/**
 * void (*signal(int sig, void (*func)(int)))(int);
 * 
 * 解析signal：signal is function returning
 * 解析*：signal is function returning pointer to
 * 
 * 接着解析(int)：signal is function returning pointer to function(int) 
 * 接着解析void ：signal is function returning pointer to function(int) returning void
 * 
 * 最后解析参数部分：(int sig, void (*func)(int))
 * (int sig, func is pointer to function(int) returning void)
 * 
 * 所以最后就是：
 * ignal is function（sig is int , func is pointer to function(int) returning void） returning pointer to function(int) returning void
 * 
 * 中文：signal 是返回“指向返回void 的参数为int 的函数的指针”的函数，它有两个参数，一个是int，另一个是指向返回void的参数为int的函数的指针。
 */
